package com.iman.Confucius.service.impl;

import java.security.NoSuchAlgorithmException;
import java.util.Date;

import javax.inject.Inject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;

import com.iman.Confucius.domain.User;
import com.iman.Confucius.mappers.UserMapper;
import com.iman.Confucius.service.RegisterService;
import com.iman.common.hibernate.HibernateSupport;
import com.iman.common.hibernate.TemplateQLService;
import com.iman.common.util.DateUtils;
import com.iman.common.util.EncryptTool;
import com.iman.common.util.IdCreater;
import com.iman.common.util.Saltcheckutil;

@Service(value="registerService")
public class RegisterServiceImpl implements RegisterService{

    private  Logger logger = LoggerFactory.getLogger(RegisterServiceImpl.class);
    
    @Inject
	TemplateQLService templateQLService;
	@Inject
	HibernateSupport hibernateSupport;
	
	 @Inject 
	 UserMapper usermapper;
	    
	
	@Override
	public User getUserById(String userId) {
		User user = this.hibernateSupport.get(User.class, userId);
		return user;
	}
	
	@Override
	public User getUser(Long userId) {
		User user = this.hibernateSupport.get(User.class, userId);
		return user;
	}

	@Override
	public Long saveUser(User user) {
	    // 性别 1，男；2，女
	    user.setGender(2);
	    // 用户描述
	    user.setUser_desc("注册用户");
	    // 生成密码种子
	    String salt = "abcdefghijklmnopqrstuvwxyz9876543210";
        try {
            salt = EncryptTool.md5Hex(EncryptTool.sha1HEX(DateUtils.getCurrentStringDateYYMDHMSS()) );
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            logger.error(e.getMessage());
        } catch (Exception e) {
            e.printStackTrace();
            logger.error(e.getMessage());
        }
        // 密码种子
	    user.setPwdsalt(salt);
	    // 使用密码种子加密密码
	    user.setPwd(Saltcheckutil.saltArithmetic(user.getPwd(), salt));
        user.setUserId(IdCreater.getId());
        user.setUserType(5);        // 5 代表注册用户
        user.setUser_uyn(1);        // 是否使用， 0表示不使用，1表示使用
        user.setUser_source(0);     // 用户来源，0，自己注册； 1，网校；2，代理商；3，分校
        user.setUser_sourceid(0);   // 用户来源的细分
        user.setCreateTime(new Date());
        user.setUserAvtive(0);      // 默认0 未激活，不能登陆系统，1位激活， 代理商管理员创建的用户都为1
        user.setUser_lock(0);       // 0 未锁定，1锁定， 锁定后暂时不能进入，需要等待一段时间
	    Long pk = (Long) this.hibernateSupport.save(user);
	    return pk;
	}

}
